package com.upstairstechnology.oi.notification.email;

import org.springframework.beans.factory.annotation.Required;

import com.upstairstechnology.oi.notification.NotificationStrategy;
import com.upstairstechnology.oi.notification.email.resolver.EmailResolver;

/**
 * Email notification strategy definition.
 * 
 * @author Jeff Jensen
 */
public interface NotificationStrategyEmail extends NotificationStrategy {
    /**
     * Get the EmailConfiguration, the configuration for sending emails.
     * 
     * @return The EmailConfiguration.
     */
    NotificationConfigurationEmail getEmailConfiguration();

    /**
     * Set the EmailConfiguration, the configuration for sending emails.
     * 
     * @param cfg
     *            The EmailConfiguration to set.
     */
    @Required
    void setEmailConfiguration(NotificationConfigurationEmail cfg);

    /**
     * Set the emailResolver, the strategy to convert SCM user ids to email
     * addresses.
     * 
     * @param resolver
     *            The emailResolver to set.
     */
    @Required
    void setEmailResolver(EmailResolver resolver);
}
